# [钛妹]: 字符串变形魔法：钛妹钛哥玩转替换与分割！
print("不懂科技就会落伍！每天进步一点点，今天量子钛又学习了Python的字符串方法，欢迎大神们指正错误！")

# [钛妹]: 钛哥，学了这么多字符串格式化的方法，感觉字符串已经可以随意变美了！ 今天我们来学点更厉害的变形魔法吧！
# [钛哥]: 哈哈，钛妹，今天我们就来学习字符串的变形魔法！ 让字符串不仅外表漂亮，还能随意改变内容和结构！ 准备好了吗？

# [钛妹]: 首先看到 `maketrans()`，名字听起来有点神秘，它是用来做什么的呢？
# [钛哥]: `maketrans()` 就像字符串变形魔法的秘籍，它用来创建一个**字符映射表 (translation table)**。  
# [钛哥]: 这个表就像一本密码本，告诉 Python 如何将一个字符替换成另一个字符。  `maketrans()`  本身不直接替换，而是为  `translate()`  方法准备 “变形规则”。

#  例子：创建替换规则，将 "abc" 替换成 "xyz"
translation_table = str.maketrans("abc", "xyz") #  注意这里要用 str.maketrans，因为 maketrans 是静态方法
print(f"# 使用 maketrans('abc', 'xyz') 创建的转换表: {translation_table}")
print("# (这个转换表告诉 Python， 'a' 替换成 'x', 'b' 替换成 'y', 'c' 替换成 'z')")
# [钛妹]:  哦~  `maketrans()`  是魔法书，记录了字符变形的规则！  那怎么使用这个规则来变形字符串呢？  这就需要用到 `translate()`  方法了吧？

# [钛妹]:  接下来是 `partition()`，它是用来分割字符串的。  上次学了 `split()`  分割成列表， `partition()`  又有什么不同呢？
# [钛哥]:  `partition()`  分割字符串的方式很特别，它会根据指定的分隔符，把字符串分割成**三部分**： 分隔符左边的子字符串、分隔符本身、分隔符右边的子字符串。 
# [钛哥]:  它返回的是一个包含这三部分的 **元组 (tuple)**，而不是列表。  `partition()`  就像一把手术刀，精准地将字符串 “一刀切” 成三段！

string_example_partition = "apple,banana,orange"
partitioned_string = string_example_partition.partition(",") # 用逗号 "," 分割
print(f"# 原始字符串: '{string_example_partition}'")
print(f"# 使用 partition(',') 分割后: {partitioned_string}")
string_example_partition_no_separator = "applebananaorange"
partitioned_string_no_separator = string_example_partition_no_separator.partition(",") # 分隔符不存在
print(f"# 原始字符串: '{string_example_partition_no_separator}'")
print(f"# 使用 partition(',') 分割后 (分隔符不存在): {partitioned_string_no_separator}")
# [钛妹]:  `partition()`  分割的好处是可以把分隔符也保留下来！  这在某些需要分析分隔符的场景下很有用！ 

# [钛妹]:  最后是 `replace()`，这个方法名字很直白，就是用来替换字符串中的内容的吧？
# [钛哥]:  是的，钛妹！ `replace()`  方法非常实用，它可以让你随心所欲地**替换**字符串中指定的子字符串。 
# [钛哥]: 你可以指定要替换的旧子字符串、新的子字符串，还可以控制替换的次数。  `replace()`  就像字符串的 “橡皮擦” 和 “魔术笔”，擦掉旧内容，写上新内容！

string_example_replace = "I love apple, apple is delicious"
replaced_string = string_example_replace.replace("apple", "banana") # 将 "apple" 替换成 "banana"
replaced_string_once = string_example_replace.replace("apple", "banana", 1) # 只替换第一次出现的 "apple"
print(f"# 原始字符串: '{string_example_replace}'")
print(f"# 使用 replace('apple', 'banana') 后: '{replaced_string}'")
print(f"# 使用 replace('apple', 'banana', 1) 后 (只替换一次): '{replaced_string_once}'")
# [钛妹]:  `replace()`  真是太方便了！  批量替换，指定次数替换，想怎么换就怎么换！  字符串内容修改神器！

# [钛哥]: 恭喜钛妹解锁字符串变形魔法！又到了总结时刻，钛妹，考验你的时候到了！总结一下吧
# [钛妹]: No problem!
print("# - `maketrans()`:  创建字符映射表，为字符替换做准备 (魔法秘籍)")
print("# - `partition()`:  分割字符串成三部分，精准切割 (手术刀)")
print("# - `replace()`:  替换指定子字符串，随心所欲改变内容 (橡皮擦 + 魔术笔)")
print("# [钛哥]:  掌握这些变形魔法，你就可以让字符串千变万化，满足各种需求啦！")

# [钛妹]: 好啦，这期内容到此结束，你是不是感觉又进步了一点点？点赞关注不迷路！
print("好啦，这期内容到此结束，你是不是感觉又进步了一点点？点赞关注不迷路！")